package com.tedu.api.list;

import org.junit.Test;

import java.util.Collection;

//测试：  ①创建父类：Fruit---属性：name  名字  |方法
//       ②创建两个子类：Apple、Orange---构造器：传水果名
//       ③创建类：TestJob   泛型  ？    extends   父类
//       约束：----静态的方法  printFruit（）
//       约束要求：只能是继承父类的子类才可以使用
//       限定传入子类一定是继承父类操作
// ④单元测试：testE（）测试---约束是否限制成功
//实际开发应用中，高级程序员制定？
public class Fruit {
    private String name;    //私有属性   name   水果名

    public String getName() {  //获取名字
        return name;
    }

    public Fruit(String name) {//有参数的构造器
        this.name = name;
    }
}
//创建两个子类：Apple和Orange继承Fruit
class Apple extends Fruit{
    public Apple() {//Apple a=new Apple();   打印水果名称
        super("苹果");
    }
}
class Orange extends Fruit{
    public Orange() {
        super("橘子");
    }
}
//       创建类：TestJob类-静态方法 printFruit:添加约束：传入类型一定是否事父类的子类
class TestJob{           //?【任意类型】   extends Fruit
                         //传入类型必须继承与Fruit父类
    public static void printFruit(Collection<? extends Fruit> fruits){
             //增强for循环   父类Fruit  名称
        for (Fruit fruit:fruits){//获取继承【Apple、Orange】与父类的功能
            //打印对象名称
            System.out.println(fruit.getName());

        }
    }
//测试：上界限定：一定继承Fruit
    class Pear {

}
}

